package br.com.teste.manager.historia;

import br.com.teste.controller.historia.HistoriaVo;
import br.com.teste.controller.tarefa.TarefaVo;
import br.com.teste.entity.Historia;
import br.com.teste.entity.Tarefa;
import br.com.teste.entity.Usuario;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;

public class HistoriaBuilder {


    @Autowired
    private HistoriaManager historiaManager;

    public void build(HistoriaVo vo) {

        Assert.notNull(vo, "História não informada!");
        Assert.notNull(vo.getDescricao(), "Descrição não informada!");
        Assert.notNull(vo.getEsforco(), "Esforço não informado!");
        Assert.notNull(vo.getListTarefa(), "Tarefa não informada!");


        Historia historia = new Historia();
        historia.setNumero(vo.getNumero());
        historia.setDescricao(vo.getDescricao());
        historia.setEsforco(vo.getEsforco());

        List<Tarefa> listTarefa = new ArrayList<Tarefa>();

        for (TarefaVo lista : vo.getListTarefa()){
            Tarefa tarefa = new Tarefa();
            tarefa.setId(lista.getId());
            tarefa.setNome(lista.getNome());
            tarefa.setDescricao(lista.getDescricao());
            tarefa.setDataInicio(lista.getDataInicio());
            tarefa.setDataFim(lista.getDataFim());
                Usuario usuario = new Usuario();
                usuario.setId(lista.getUsuarioVo().getId());
                usuario.setNome(lista.getUsuarioVo().getNome());
            tarefa.setUsuario(usuario);

            listTarefa.add(tarefa);

        }
        historia.setListTarefa(listTarefa);

        historiaManager.salvar(historia);

    }

}
